[asp.net] cookies的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:28:28
我有两个按钮button1和button2,事件如下:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Cookies["number"].Value = "1";
Response.Write(Server.HtmlEncode(Request.Cookies["number"].Value));
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Cookies["number"].Value = "2";
Response.Write(Server.HtmlEncode(Request.Cookies["number"].Value));
}
目标效果是,按button1,cookies的值是1,页面显示1;按button2,cookies的值是2,页面显示2.可是当我点击按钮的时候,要点两次才会更换数值,也就是要刷新页面,cookies的值才会改变,如何解决

protected void Button1_Click(object sender, EventArgs e)
{
Response.Cookies["number"].Value = "1";
Response.Write(Server.HtmlEncode(Response.Cookies["number"].Value));

}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Cookies["number"].Value = "2";
Response.Write(Server.HtmlEncode(Response.Cookies["number"].Value));

}
Response.Cookies["number"].Value = "1";是响应的COOKIES值,Response.Write也应该输出响应的COOKIES而非请求(REQUEST)的COOKIES值.请求的COOKIES仍然是上次响应的COOKIES值
这样就可以了.
----------------------------------------------------------
第一次成功,是因为请求的COOKIES为空.点了按钮以后,再request.cookies则为从页面响应过来的值了.这个时候虽然给reponse.cookies赋了值,但是并不能改变请求的request.cookies,所以每次都是上次的值...

那为什么点击两下就能成功呢?点击第二下点击事件应该依然从头开始运行才对阿,这样的话还能运行过去吗?

为什么页面第一次运行时可以正常显示,并不需要点击两次